Portable Globe Creation for a Geographical Information System

ABSTRACT

Portable globes may be provided for viewing regions of interest in a Geographical Information System (GIS). A method for providing a portable globe for a GIS may include determining, one or more selected regions corresponding to a geographical region of a master globe. The method may further include organizing geospatial data from the master globe based on the selected region and creating the portable globe based on the geospatial data. The portable globe may be smaller in data size than the master globe. The method may include transmitting the portable globe to a local device that may render the selected region at a higher resolution than the remainder of the portable globe in the GIS. A system for providing a portable globe may include a selection module, a fusion module and a transmitter. A system for updating a portable globe may include a packet bundler and a globe cutter.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a Continuation of and claims priority to co-pending.International Appl. No. PCT/US2011/025913, filed Feb. 23, 2011, which isincorporated by reference herein in its entirety, which claims priorityto co-pending U.S. patent application Ser. No. 12/711,044, filed Feb.23, 2010, entitled “Portable Globe Creation for a GeographicalInformation System,” which is also incorporated by reference herein inits entirety.

BACKGROUND Technical Field

The embodiments described herein relate to geographical informationsystems.

Background Art

Geographic Information Systems (GIS) capture, store, manage and displaydata elements according to geospatial coordinates. For example, GoogleEarth renders satellite imagery, terrain, vectors and other data over athree-dimensional geometry representing the Earth's surface. GoogleEarth users can “fly” or navigate around a virtual Earth, while data andImages corresponding to geographical locations are presented in varyingdegrees of detail.

In order to provide this user experience, an enormous amount ofgeospatial data may be organized and indexed into a “globe.” A globe isa directory hierarchy containing a number of bundled tiles that areorganized in a way such that imagery, terrain, and vectors can be easilyserved to a client. High resolution globes are created by organizingtens of terabytes of imagery, terrain, and vector data that are fusedtogether to create a navigable globe. The fused globe allows smoothpanning and zooming to any view point, allowing in-context viewing oflarge amounts of data. The globes support both exploration as well assearch for particular features.

These globes are invaluable tools for industry and government analystsand operational users who depend on access to the central servers thatprovide the globes' data to their “spinning earth” clients. However,sometimes such access is not available. For example, military, firstresponder, or relief efforts on the ground need access to globe datarelevant to their area of interest, but there may be no way for them toconnect to the large, central globe, or they may only have limitedconnectivity for short periods of time.

BRIEF SUMMARY

Embodiments described herein refer to systems and methods for providinga portable globe for a geographical information system (GIS). Accordingto an embodiment, a method for providing a portable globe for a GIS mayinclude querying a database for one or more geographical coordinatesbased on query information. Query information may include parametersbased on demographic (actors, historical factors, political factors,etc. For example, query information may include cities or populationcenters having a certain population. The database query may returngeographical coordinates, such us longitude and latitude coordinates,for bounded areas of qualifying cities. The geographical coordinates maybe converted into quadtree addresses based on a selected resolutionlevel. The method may determine al least one selected regioncorresponding to a geographical region of a master globe based on thequadtree addresses.

The geospatial data from the master globe may be organized based on theselected regions. This may include the quadtrees of the one or moreselected regions. The method may further create the portable globe basedon the organized geospatial data. The portable globe is smaller than themaster globe and comprises data files that include greater geospatialdata for the selected regions than the remainder of the portable globe.Finally, the method transmits the portable globe to a local deviceconfigured to render the portable globe in the GIS. The selected regionsare capable of being rendered at a higher resolution than the remainderof the portable globe.

According to another embodiment, a system for providing a portable globefor a GIS may include a selection module configured to query a databasefor one or more geographical coordinates based on query information,convert the geographical coordinates to quadtree addresses, anddetermine at least one selected region corresponding to a geographicalregion of a master globe based on the quadtree addresses. The system mayalso include a fusion module configured to organize geospatial data fromthe master globe based on the at least one selected region and create aportable globe based on the organized spatial data. The portable globemay comprise one or more data files that include greater geospatial datafor the selected regions than for the remainder of the portable globe.The system may further include a transmitter configured to transmit theportable globe to a local device that is configured to render theportable globe in the GIS. The selected regions of the portable globeare then capable of being rendered at a higher resolution than theremainder of the. portable globe.

According to a further embodiment, a method for updating a portableglobe for a GIS may include receiving a request for updated geospatialdata based on at least one selected region from a local device capableof displaying a spinning-earth GIS. Packet requests may be generated foreach layer of the at least one selected region. The method also includesobtaining updated geospatial data from a master globe server using thegenerated packet requests. A series of packet request may be generatedindividually or in a bundled format. A new portable globe is createdbased on the updated geospatial data. The new portable globe may becreated based on the updated geospatial data by comparing the updatedgeospatial data with an old portable globe. The new portable globe maybe created without redundant globe data, such as front the old portableglobe. The method then includes providing the new portable globe to thelocal device with a reference to the old portable globe. The localdevice can display an updated portable globe having data files thatinclude greater geospatial data for the selected regions than for theremainder of the portable globe so that the updated globe can berendered at a higher resolution than the remainder of the portable globein the spinning-earth GIS on the local device.

According to another embodiment, a system for updating a portable globefor a GIS may include a packet bundler configured to receive a requestfor updated geospatial data based on at least one selected region from alocal device capable of displaying a spinning-earth GIS, generate packetrequests for each layer of the selected regions, and obtain updatedgeospatial data from a master globe server using the generated packetrequests. The system may also include a globe cutter configured tocreate a new portable globe based on the updated geospatial data bycomparing the updated geospatial data with an old portable globe. Thenew portable globe may be created without redundant globe data. Theglobe cutter may also be configured to create an updated portable globebased on the organized geospatial data and provide the updated portableglobe to the local device with a reference to the old portable globe.The local device can display the updated portable globe having datafiles that include greater geospatial data for the selected regions thanfor the remainder of the portable globe so that the selected regionsglobe can be rendered at a higher resolution than the. remainder of theportable globe in the spinning-earth GIS on the local device.

According to a further embodiment a method for rendering an updatedportable globe on a local device for a GIS may include requesting, froma globe server, updated geospatial data for at least one selected regionto update an old portable globe used for displaying a spinning-earthGIS. The at least one selected region is capable of being rendered at ahigher resolution than the remainder of the old portable globe. Themethod may also include obtaining the new portable globe with areference to the old portable globe. The method may further includecreating an updated portable globe with the new portable globe and thereferenced old portable globe. The method may include rendering theupdated portable globe in the spinning-earth GIS.

According to another embodiment, a system for rendering an updatedportable globe on a local device for a GIS may include a requesterconfigured to request, from a globe server, updated geospatial data forat least one selected region to update an old portable globe used fordisplaying a spinning-earth GIS. The at least one selected region iscapable of being rendered at a higher resolution than the remainder ofthe old portable globe. The requester may obtain the new portable globewith a reference to the old portable globe. The system may also includea globe creator configured to create an updated portable globe with thenew portable globe and the referenced old portable globe and render theupdated portable globe in the spinning-earth GIS.

Further embodiments, features, and advantages, as well as the structureand operation of the various embodiments are described in detail belowwith reference to accompanying drawings.

BRIEF DESCRIPTION OF THE FIGURES

Embodiments are described with reference to the accompanying drawings.In the drawings, like reference numbers may indicate identical orfunctionally similar elements. The drawing in which an clement firstappears is generally indicated by the left-most digit in thecorresponding reference number.

FIG. 1 is a diagram of a system for providing a portable globe for ageographical information system (GIS), according to an embodiment of thepresent invention.

FIG. 2 is a diagram of a system for providing a portable globe for aGIS, according to an embodiment.

FIG. 3 is an example display of selecting a region of interest,according to an embodiment.

FIG. 4 is diagram of a selection of quadtree nodes, according to anembodiment.

FIG. 5 is a flowchart illustrating a method for providing a portableglobe for a GIS, according to an embodiment.

FIG. 6 is a flowchart illustrating a method for providing a portableglobe for a GIS, according to an embodiment.

FIG. 7 is a diagram of a system for updating a portable globe for a GIS,according to an embodiment.

FIG. 8 is an example display view for providing a portable globe for aGIS, according to an embodiment.

FIG. 9 is a flowchart illustrating a method for updating a portableglobe for a GIS, according to an embodiment.

FIG. 10 is a diagram of a system for rendering an updated portable globefor a GIS, according to an embodiment.

FIG. 11 is a flowchart illustrating a method for rendering an updatedportable globe for a GIS, according to an embodiment.

DETAILED DESCRIPTION OF THE INVENTION

Embodiments are described herein with reference to illustrations forparticular applications. It should be understood that the invention isnot limited to the embodiments. Those skilled in the art with access tothe teachings provided herein will recognize additional modifications,applications, and embodiments within the. scope thereof and additionalfields in which the embodiments would be of significant utility.

Google Earth renders satellite imagery and other data over athree-dimensional geometry representing the Earth's surface. Thisgeospatial data may be organized and indexed into a “globe,” or adirectory hierarchy containing a number of packet bundles (files) thatcan be used to serve imagery, terrain, and vectors to a Google Earthserver or clients. High resolution globes may be organized by using tensof terabytes of imagery, terrain, and vector data at a variety ofresolutions from a variety of sources and “fusing” the geospatial datatogether to create a navigable globe. The fused globe allows smoothpanning and zooming to any view point, allowing in-context viewing oflarge amounts of data.

The globes are invaluable tools for industry and government analysts whohave access to the central servers that provide the globes' data totheir “spinning earth” clients. However, sometimes such access is notavailable. For example, military, first responder, or relief efforts onthe ground need access to globe data relevant to their current location,but there may be no way for them to reach the large, central masterglobe. Some solutions have involved forcing the resource-intensive globefusion process to a local laptop of a user. However, laptops and localdevices may not be able to handle the fusion process. Also, if there aremany different regions of interest, this becomes a major databasemanagement undertaking and deployment with existing systems is far fromstraightforward.

Embodiments described herein relate to providing a portable globe to ageographical information system (GIS). According to many embodiments, aportable globe may be created based on one or more regions selected froma master globe, a large central globe that includes imagery, terrain,and vector data. The portable globe may be a new, potentially muchsmaller globe that can be transmitted to a local computing device andrendered by a “spinning earth” client or server on the local device. Theportable globe may be used with or without network connectivity and canbe easily distributed to people on the ground. For example, FIG. 1 showsa master globe server 110 located in a city. A region of interest isselected and a portable globe is created and served to local device 120.The selected region of the Earth is more remote and local device 120will be operating without network connectivity. In some cases, there maybe network connectivity, but not of a sufficient bandwidth to adequatelyhandle the data transfer of a globe. Many users tend to havewell-defined regions of interest, so they do not require access to thelobe in its entirety, only a small portion of it. The portable globe isa lightweight solution that supports easy grab-and-go capabilities.

Example System

FIG. 2 shows an exemplary system 200 for providing a portable globe fora geographical information system (GIS), according to an embodiment.System 200 shows master globe server 210 that can transmit a portableglobe 230 to local device 220. Master globe server 210 may includeselection module 212, fusion module 214, master globe repository 216 andtransmitter 218.

Master globe server 210 may be a processor-based computing device. inother cases, master globe server 210 may be software executed on aprocessor-based computing device. A computing device can be any type ofdevice having one or more processors. For example, a computing devicecan be a workstation, mobile device (e.g., a mobile phone, personaldigital assistant, tablet or laptop), computer, server, compute cluster,server farm, game console, set-top box, kiosk, embedded system or otherdevice having at least one processor and memory. Embodiments of thepresent invention may be software executed by a processor, firmware,hardware or any combination thereof in a computing device. According toa further embodiment, master globe server 210 may include one or moredatabases, such as master globe repository 216. Local device 220 mayalso be a computing device.

Master globe server 210 may he configured to execute or provide computersoftware or data, according to an embodiment. Such software or data mayrelate to graphics applications that render or serve high resolutionimages, such as in a geographical information system (GIS). Thesesoftware applications may be displayed in a user interface on masterglobe server 210 or served to and displayed on a user interface on aclient computer, such as local device 220. The user interface may heserved through a web-based application that is executed on local device220. Web-based applications may include web browsers. Web-basedapplications may also include thin client applications that retrievecontent from and provide content to master globe server 210.

According to an embodiment, a user or administrator may select one ormore geographical regions of the Earth. These regions may be selectedfrom a master globe. Region selection may be performed using selectionmodule 212. According to some embodiments, selection module 212 may beconfigured to provide a user interface to enable a user to select aregion from a master globe. A master globe may be stored in master globerepository 216. The user interface may provide a number of tools thatallow a user to spin around and navigate a virtual display of the Earth.For example, the user interface may be a Google Earth interface. In somecases, certain regions may be searched using search data or tablesassociated with a master globe.

A geographical region may be selected from a master globe. A selectedregion may sometimes be a region of interest (ROI), or any localizedarea where a user has indicated a particular interest. Regions may beselected in a number of ways, for example, by rectangles, ellipses,polygons or any method to focus attention on a specific area. Accordingto an embodiment, a user or administrator may select a region by drawinga. polygon encompassing a region of interest. Regions may also heselected using multiple polygons.

FIG. 3 illustrates an example display view 300 of a user interface, suchas selection interface 310, according to an embodiment. In some eases,selection interface 310 may be provided by selection module 212. In mostcases, selection interface 310 may be displayed through a web-basedapplication window, such as a web browser window. in this case,selection interface 310 shows an image 312 of a country 316 that may benavigated or manipulated with display tools 318. A region of the Earthmay be selected using polygon 314. In some cases, selection interface310 can show different color lines or additional graphic helps to guidea user through the polygon construction process. in other cases,selection interface 310 may provide polygon selection shapes such asrectangular frames.

A master globe may be layered with a number of levels, according to anembodiment. Each level may render images at a certain resolution. At agiven level, the surface may be made of a number of data nodes, such asquadtree nodes. A quadtree is a tree data structure in which eachinternal node has up to four recursively subdivided regions. Forinstance, a number of quadtree nodes may exist for a given resolutionlevel. If a higher resolution level is available, the next resolutionlevel will have four quadtree nodes where the original level had one.

According to a further embodiment, a resolution at which a polygon is tobe considered may be predetermined or explicitly set using otherselection interface tools 318. A default resolution level is a level atwhich all imagery, terrain, and vector data are included in the portableglobe, whether or not they are in the selected region. A polygon levelis a level at which quadtree nodes are used to define the polygon andits interior. A polygon level will likely not be a higher resolutionthan the maximum level.

According to some embodiments, all portions of the Earth overlapping thepolygon at a specified resolution are preserved. In most cases, this maybe at a maximum resolution, where all imagery, terrain, and vector datathat is in the selected region is included in the portable globe. Forthe rest of the master globe, a background or default resolution may beset. In most cases, this may be a lower resolution, or even a minimumresolution. Once one or more selections are made, selection informationis received by selection module 212, according to an embodiment hi somecases, location information and resolution information are received. Inother cases, only information location is received and resolutioninformation is determined or inferred by selection module 212 or fusionmodule 214.

According to an embodiment, vertices of a polygon at a given polygonlevel may guarantee that quadtree nodes at that level that contain thevertices will be included in a selected region. These vertex quadtreenodes may consequently be thought of as new vertices for a polygondefined at the polygon level. This new polygon may then be “drawn andfilled” at the polygon level using the quadtree nodes as pixels. FIG. 4shows an example diagram 400 of a selection of quadtree nodes, accordingto an embodiment. In this case, each block may represent a quadtreenode. Polygon 402 may define a selected region. All quadtree nodesincluded in polygon 402, such as node 404, may be included as part ofthe selected region. Node 406 is outside the selected region. In somecases, edges of polygon 402 may not he used, so it is possible for partsof the edges to be outside of the quadtree nodes in the selected region.if all nodes are filled at a lower level, a quadtree node path is storedfor that lower level node rather than storing the node paths for all ofthe higher resolution nodes, according to an embodiment. Sets of nodepaths may be appended to create multiple high resolution regions ofinterest.

According to a further embodiment, a portable globe is built by“walking” the quadtree. If a node is at or below a default resolutionlevel, all of the data it specifies is moved to the portable globe.Likewise for nodes that fall within the specified high resolution regionof interest. This region expands as you move up from the polygon levelto lower levels. if no data from the node is being saved, then the nodeand all of its children are removed from the quadtree.

According to a further embodiment, a portable globe may ensure that theselected region is represented at lower resolution by preserving thequadtree nodes at every level that encapsulate those in the selectedregion. This means that a neighboring region may or may not be includedat fairly high-resolution, depending on how close it is to the polygonedge and to certain quadtree node boundaries. For example, node 408 ofFIG. 4 is on a polygon edge. This behavior may he considered reasonablebecause since the neighboring region was not included in the polygon, itmay not have been of great interest. In this case, these neighboringregions may be included only so that the region of interest can be seenat low resolution, and at these resolutions they may very well havedetail from neighboring regions in their raster or vector packets. inother embodiments, an image pixel may appear at different levelsdepending on expanding quadtree node boundaries. A feature may be seenat higher resolutions; however, resolution may not improve once thefeature no longer shared a quadtree node with the polygon.

According to a further embodiment, selection information received byselection module 212 may be used by fusion module 214 to determine whatportions of the master globe to retrieve for a new portable globe.Fusion module 214 may be configured to organize geospatial data from themaster globe based on a selected region. Fusion module 214 may also heconfigured to create a portable globe based on the organized spatialdata. The portable globe may comprise data files that include greatergeospatial data for the selected region than for the remainder of theportable globe. According to another embodiment, organizing may includeretrieving master globe tiles and data for the at least one selectedregion at a higher resolution in order for the portable globe to rendera higher resolution for the at least one selected region.

According to an embodiment, a portable globe is created by retrievingimage, terrain and vector data tiles and data from a master globe. Asfusion module 214 moves to lower resolutions, any tiles and data thatoverlap the region of interest are kept. This helps to ensure that highresolution features in the region of interest can be spotted and zoomedin on from lower resolutions. Fusion module 214 continues until adefault resolution is reached, at which point all data from the masterglobe is kept. Finally, all searchable data that is within the specifiedregion of interest is retrieved from a database.

The retrieved tiles and search data are stored in a form thatconstitutes a portable globe. The portable globe can be easilydownloaded to any laptop or portable storage device and accessed via alocal server or client with or without a network. The data is served bya light-weight server system that can run on multiple platformsincluding Windows, Mac OS X, and Linux.

Fusion module 214 may be configured to use a keyhole file technique forcreating a portable globe, according to an embodiment. For example, akeyhole flat file (KFF) is a set of data packets that are spatiallyindexed. A KFF technique is disclosed in U.S. Pat. No. 7,225,207 toChikai Obazama et al., which is herein incorporated by reference. Suchtechniques may include a dbroot file, which contains information usedfir deployment of KIT data to a client or server, such as a Google Earthclient. In such cases, fusion may involve rewriting a dbroot file andchanging the locations of search tab servers. Also, icons from a dbrootfile may be downloaded to the portable globe directory. High resolutionquadtree nodes, a default level, and a maximum level may be used to getquadtree packets, imagery, terrain, and vector data for a portableglobe, According to a further embodiment, a polygon may be used toobtain search data from a database. Search data tables may be moved tothe portable globe directory. In another embodiment, the portable globedirectory may be wrapped as a compressed tarball and moved to adownloadable location.

According to another embodiment, packet bundles may provide a means ofstoring a large number of indexed packets in a limited number of filesthat have a maximum size (e.g. 2 GB). The packets may be stored in their“network-ready” state, so they can be extracted from the bundle andpassed directly to a Google Earth server or client or a local device. Aportable globe may include a directory containing one or more packetbundle directories. Data files and the index file of a packet bundle arestored at the same level in a single directory. The index file may beordered by the quadtree path address, and a binary search can be done onit to find the data file id and the offset into the file for any packet.Packet type may be stored in the index, so it is possible to put anentire globe into a single packet bundle.

According to another embodiment, separate packet bundles may be used formost of the packet types, except that the dbroot may be combined withits associated quadtree packets. A reason for this may he thatseparation provides more full in-memory caching options so that wemight, for example, cache some of the indexes in memory but not all ofthem if there is not enough room. it also could improve performance ofdelta updates since certain packet types might be updated infrequently.

A packet bundle writer may only support writing a packet bundle fromscratch, according to a further embodiment. A new index file and aninitial data file may be created. The packets may then be given incorrect quadtree order so that the resulting index is in order. Packetsmay also be appended to a current data file until it is full, and then anew data file is started. This ordered approach makes merging two packetbundles very straightforward.

According to another embodiment, an initial packet bundle reader maysupport a binary disk-based search of an index. An alternative form mayallow the index to be cached in memory. The reader may locate the indexentry for a given quadtree path and use that entry to find the packet inone of the data files. The reader may also support just returning theindex entry information so that the calling routine can read the packetdirectly itself.

A packet bundle merger may include two modified readers and a standardwriter, according to an embodiment. One reader will be tagged asdominant. The merger traverses both indexes in sequential order,grabbing the next packet in the sequence from whichever reader has itand forwarding that packet to the writer. If both readers have thepacket, then the dominant reader's packet is used. The merger allows twoportable globes to be combined. Merger will be useful for delta updates.

Transmitter 218 of exemplary system 200 may be configured to transmit aportable globe, such as portable globe 230, to a local device, such aslocal device 220 configured to render the portable globe in the GIS,according to an embodiment. For example, local globe server 222 may beused to render portable globe 230. Local globe server 222 may be alocalhost server, such as a Google Earth server on local device 220.Local device 220 may also render portable globe 230 using a client, suchas a Google Earth client or a Google Earth viewer. The selected regionof the portable globe is capable of being rendered at a higherresolution than the remainder of the portable globe. According to someembodiments, servers may support both localhost-only and shared servingso that the globe can be viewed by only the local machine or shared witha small number of users on a local network.

Example Method

FIG. 5 is a flowchart illustrating an exemplary method 500 for providinga portable globe for a geographical information system (GIS), accordingto an embodiment. In step 502, at least one selected regioncorresponding to a geographical region of a master globe is received.Selection information may be received, for example, by selection module212. In some cases, selection module 212 may assist in deter mining theselection information.

According to an example embodiment, a user may perform the followingsteps to select a region. First, a user viewing an area of the Earthproximate to a region of interest in a selection interface may zoom outto a low-level resolution for the background globe. The user may setthis resolution as a default level. For example, a user may click on the“Set Default Level” button shown in selection interface 310 in FIG. 3.The user may then navigate to a region of interest. The user may zoominto the highest resolution at which the user would want to view theselected region. The user may then set this resolution as a highresolution level. A user may then select the high resolution region bydrawing a polygon around the region of interest. A source server andglobe name may be specified.

In step 504, geospatial data from the master globe may be organizedbased on the selected region. According to an embodiment, organizationmay include retrieving master globe tiles and data for the selectedregion at a higher resolution. This may provide for rendering theportable globe at a higher resolution for the selected region than forthe remainder of the portable globe. According to a further embodiment,organization may includes retrieving master globe tiles and data at ahigher resolution for imagery, terrain and vector data.

In some cases, selected asset types may be received and geospatial datafrom the master globe may be organized based on the selected asset type.Asset types include, but are not limited to, different types of dataincluded in a globe, such as imagery, terrain, and vectors. Imagery andterrain may be considered raster data because they correspond to datavalues in a rectangular grid, where the data is a color value forimagery and an altitude for terrain. Vector data refers to shapes, e.g.points, polygons, poly lines, etc. that have metadata associated withthem. For example, a point could refer to the center of a city and havethe city name and population associated with it, or a polygon line coulddescribe a road and have the road name associated with it.

Organization may include setting a first resolution for the selectedregion and a second resolution for geospatial data to be retrieved fromthe rest of the master globe, according to an embodiment. A higher ormaximum resolution may be set for the selected region while a default orlesser resolution may be set for the remainder of the master globe.These resolution levels may be predetermined and/or selected by a useror administrator during the region selection process. According to afurther embodiment, organization may include retrieving searchable datafrom the master globe for the selected region. It is also possible toinclude searchable data from the rest of the master globe; however, thissearchable data may be a lesser amount to correspond with a lesserresolution of the remainder of the globe.

In step 506, the portable globe is created based on the organizedgeospatial data. The portable globe may be smaller (in data size) thanthe master globe and comprise data files that include greater geospatialdata for the at least one selected region than for the remainder of theportable globe. This is due to higher resolutions and greater dataretrieved and organized for the selected region and less data retrievedfor non-selected regions. In some cases, globe creation or fusion (orcutting) may be performed for different asset types or managedseparately with potentially different regions of interest. According toembodiments, steps 504 and 506 may use selection module 212, fusionmodule 214, master globe repository 216, or any combination of thesemodules.

Other techniques for providing geospatial data for a portable globe maybe used, according to other embodiments. For instance, a portable globemay be created by stripping asset data from a master globe and leavingasset data strictly for that of a selected region. Different techniquesmay be used for different assets. For example, imagery, terrain andvector data may be created for a portable globe by including geospatialdata of a master globe for areas that overlap with a selected region.Search data may be retrieved only for data strictly in the selectedregion. Other data may be stripped down for all areas outside theselected region. In some cases, multi-polygon regions may be selected.Sometimes Boolean flags may be used for inclusion of terrain andvectors. In other cases, portable globe searches may be separated fromexternal searches.

The portable globe is transmitted to a local device, in step 508. Thelocal device may be configured to render the portable globe in a GIS,such as Google Earth. The selected region may be capable of beingrendered at a higher resolution than the remainder of the portableglobe. Also, more geospatial data and search data may be associated withthe selected region. Transmitter 218 may be used for this step.According to an embodiment, a user may choose to build a globe and thenfollow a provided URL link to download the created portable globe.

According to another embodiment, step 502 may be replaced with adetermination of a selected region. According to a further embodiment,step 508 may be replaced with providing the portable globe to a localdevice that can render the selected region at a higher resolution thanthe remainder of the portable globe in a spinning-earth GIS. in somecases, a number of portable globes may be available to a local devicebased on previous region selections. In other cases, a catalog moduleconfigured to provide display information corresponding to the portableglobe and other portable globes may be used to provide portable globesto a local device. Such a catalog may allow browsing and downloading offree or purchased portable globes.

In addition, a downloader configured to provide a selected portableglobe to a local device may be used. Once served or rendered in aspinning-earth GIS on the local device, the selected region may becapable of being rendered at a higher resolution than the remainder ofthe portable globe. According to some embodiments, a zip or gz tarballmay be created for a globe to be downloaded. Built-in consistency checks(CRC) on the downloads and unpacking may also be included.

According to further embodiments, server and globe management methodsmay be used. For example, organization may include filtering geospatialdata based on filtering information Filtering information may includefilter parameters, data or metadata features. Filtering information mayalso include, but is not limited to, permissions, license information,dates, sources, vector layers, quality metrics or other asset metadata.In other examples, a default server may only accept connections from thelocal device or a limited number of IP addresses. In one scenario, an IPaddress could be cleared by restarting the server so it would not overlyconstrain different usage patterns. Encryption may also be used. Also,very focused regions of interest may help limit demand for unauthorizedaccess to portable globes. In other cases, search may be an easy placeto limit a portable globe's extent. As a default, dbroot search URLs maybe set to only point back at localhost.

FIG. 6 is a flowchart illustrating an exemplary method 600 for providinga portable globe for a geographical information system (GIS), accordingto an embodiment. In step 602, a database is queried for one or moregeographical coordinates based on query information. The database may belocated locally or remotely. The query information may automatically begenerated by a set of parameters or it may be user selected. The queryinformation may also be received, for example, by selection module 212.In some cases, selection module 212 may assist in determining the queryinformation.

In step 604, the one or more geographical coordinates are converted intoquadtree nodes based on a selected resolution level. All quadtree nodescontained within the geographical coordinates of the query may beincluded as part of the selected query region. In some cases, edges ofquadtree nodes near the edges of a query region may not be used, so itis possible for parts of the edges to be outside of the quadtree nodesin the selected region. If all nodes are filled at a lower level, aquadtree node path is stored for that lower level node rather thanstoring the node paths for all of the higher resolution nodes, accordingto an embodiment.

In step 606, at least one selected region corresponding to ageographical region of a master globe may be determined based on thequadtree addresses. The may include one or many selected regions ofpossibly different sizes and shapes. Steps 602-606 may be furtherillustrated by an example embodiment. A user may perform the followingsteps to select a region. First, a user viewing an area of the Earthproximate to a region of interest can input an region or area ofinterest to using a user interface. The user may select a resolution asa default level of resolution, for example, by clicking on the “SetDefault Level” button shown in selection interface 310 in FIG. 3. A usermay enter a query for cities in Egypt with populations greater than250,000 people and then select a resolution level. The user may thenreceive a map highlighting cities in Egypt with populations greater than250,000 people. In some cases, a user may then navigate to a city ofinterest and zoom into the highest resolution, at which the user wouldwant to view the selected city or region. The user may then set thisresolution as a high resolution level and the city or region of interestwould be determined. A source server and globe name may be specified.

In step 608, geospatial data from the master globe may be organizedbased on the selected regions. Organization may include retrievingmaster globe tiles and data for the selected region at a higherresolution. This may provide for rendering the portable globe at ahigher resolution for the selected region than for the remainder of theportable globe. According to a further embodiment, organization mayinclude retrieving master globe tiles and data at a higher resolutionfor imagery, terrain and vector data.

In some cases, selected asset types (layers or channels) may be receivedand geospatial data from the master globe may be organized based on theselected asset type. Asset types may include, but are not limited to,different types of data included in a globe, such as imagery, terrain,and vectors. Imagery and terrain may be considered raster data becausethey correspond to data values in a rectangular grid, where the data isa color value for imagery and an altitude for terrain. Vector datarefers to shapes, e.g. points, polygons, poly lines, etc. that havemetadata associated with them. For example, a point could refer to thecenter of a city and have the city name and population associated withit, or a polygon line could describe a road and have the road nameassociated with it. All of these asset types may be translated intoqueries that are searchable in the database.

Organization may include setting a first resolution for the selectedregion and a second resolution for geospatial data to be retrieved fromthe rest of the master globe, according to an embodiment. A higher ormaximum resolution may be set for the selected query region while adefault or lesser resolution may be set for the remainder of the masterglobe. These resolution levels may be predetermined and/or selected by auser or administrator during the region selection process. According toa further embodiment, organization may include retrieving searchabledata from the master globe for the selected query region. It is alsopossible to include searchable data from the rest of the master globe;however, this searchable data may be a lesser amount to correspond witha lesser resolution of the remainder of the globe.

In step 610, a portable globe is created based on the organizedgeospatial data. The portable globe may be smaller (in data size) thanthe master globe and comprise data files that include greater geospatialdata for the at least one selected query region than for the remainderof the portable globe. This is due to higher resolutions and greaterdata retrieved and organized for the query region and less dataretrieved for non-selected regions. in some cases, globe creation orfusion (or cutting) may be performed for different asset types ormanaged separately with potentially different regions of interest.According to embodiments, steps 602-610 may use selection module 212,fusion module 214, master globe repository 216, or any combination ofthese modules.

The portable globe is transmitted to a local device, in step 608. Thelocal device may be configured to render the portable globe in a GIS,such as Goode Earth. The selected region may be capable of beingrendered at a higher resolution than the remainder of the portableglobe. Also, more geospatial data and search data may be associated withthe selected region. Transmitter 218 may be used for this step.According to an embodiment, a user may choose to build a globe and thenfollow a provided URL link to download the created portable globe.

The portable globe may be rendered in a 3D GIS. In 3D, quadtrees areused.

In some cases, the portable globe may be rendered in a 2D GIS. For 2Dcases, a renderer may request information about a layer. If nothing isthere and there is nothing in a layer below that, a server may create orfill in any necessary layers. System 200 may also be used for cutting,organizing, fusing, updating and rendering 2D portable globes.

Updating a Portable Globe

There may be situations where it will make sense for delta updates to beused for very quick updates of a globe. According to an embodiment,globe identification and versioning may be performed using contentmanagement tools. Some updates may only modify indexes or appendpackets. This means that deleted or modified packets would have theirold data remain in the packet bundles; these out-of-date packets wouldno longer have an index entry that points to them. In these cases, ifupdates were occurring regularly, occasionally obtaining a full copy ofa portable globe may be beneficial to recover some space.

According to another embodiment, an existing portable globe on a localdevice may be updated. A delta description may include, a list ofpackets to be deleted and another globe, the delta globe. In someembodiments, a delta description may be built by performing a two-globecomparison. An updater application may then read from both the deltaglobe and the existing globe and write to a new globe. If a packet is tobe deleted, it may be ignored. If a packet is in the delta globe, it maybe written to the new globe. If a packet with the same quadtree addressand type is in the existing globe, it may be ignored. Finally, all othernodes from the existing globe may be written to the new globe. A mergerroutine may use a standard packet bundle writer and two slightlymodified packet bundle readers that allow sequential traversal of theassociated indexes.

According to a further embodiment, an updater application may create anew globe and leave the other two globes untouched. In a more disk-spaceconscious version, the application could remove packet bundle files fromthe existing globe once they were fully traversed. This could greatlyreduce the disk space requirement. In this example, the size requirementmay be reduced from 2×globe_size to globe_size+packetbundle_file_size.In another embodiment, region of interest may be maintained separatelyand new globes or updates may be generated automatically when a masterglobe is updated. Updating a portable globe may also include, accordingto an embodiment, rewriting a geospatial data index and appending ormerging geospatial data to the portable globe data files. According to afurther embodiment, the example methods of updating described above maybe assisted by an updater, which works within exemplary system 200.

Portable globes based on selected regions of interest can provide greatbenefits to users who need access to globe data relevant to theircurrent location without reliable access to a large, central masterglobe. The portable globe is a lightweight solution that supports easygrab-and-go capabilities.

FIG. 7 shows an exemplary system 700 for updating a portable globe,according to an embodiment. Local globe server 742 may be provided onlocal device 740. A portable globe for a geographical information system(GIS), such as portable globe 730, may be created from master globeserver 710 by globe cutter server 720 and transmitted over a networkaccording to an embodiment. System 700 shows master globe server 710 incommunication with the globe cutter server 720 that can transmit aportable globe 730 to local device 740. Globe cutter server 710 mayinclude packet bundler 722 and globe cutter 724.

Master globe server 710 and globe cutter server 720 may be one or moreprocessor-based computing devices. In other cases, master globe server710 and globe cutter server 720 may be software executed on one or moreprocessor-based computing devices. According to a further embodiment,globe cutter server 720 may include one or more components, such aspacket bundler 722 and globe cutter 724. Local device 740 may also be acomputing device. In a some cases, globe cutter server 720 may performthe functions of master globe server 710, or vice versa.

Master globe server 710 may be configured to execute or provide computersoftware or data, according to an embodiment. Such software or data mayrelate to graphics applications that render or serve high resolutionimages, such as in a geographical information system (GIS). Thesesoftware applications may be displayed in a user interface on masterglobe server 710 or served to and displayed on a user interface on aclient computer, such as local device 740. The user interface may beserved through a web-based application that is executed on local device740. Web-based applications may include web browsers. Web-basedapplications may also include thin client applications that retrievecontent from and provide content to master globe server 710.

According to an embodiment, a user or application may submit a query inreference to one or more geographical regions of the Earth. Theseregions may he selected from a master globe. Region selection may beperformed using a GIS application or a related application, such aslocal globe server 742, rendered and displayed on local device 740.According to some embodiments, packet bundler 722 or globe cutter 724may be configured to provide a user interface to enable a user orprocess to select a region from the master globe 710. Selected regionsmay be provided to the globe cutter server 720 as packets or packetrequests, which are organized by the packet bundler 722. In an exemplaryembodiment, packet bundler 722 selects the relevant packets, layers andresolutions for transmitting to master globe server 710. Master globeserver 710 may transmit packets of data to packet bundler 122 inresponse to packet requests.

The user interface may provide a number of tools that allow a user tospin around and navigate a virtual display of the Earth. For example,the user interface may be a Google Earth interface. In some cases,certain regions may be searched using search data or tables associatedwith a master globe. Packet bundler 722 may receive a request based on achange in the selected region of interest. Packet bundler 722 may alsorequest updates from master globe server 710 based on informationindicating that master globe server 710 has been updated.

FIG. 8 illustrates an example display view 800 of a user interface, suchas selection interface 810, according to an embodiment. In some cases,selection interface 810 may be provided by selection module 830. In mostcases, selection interface 810 may be displayed through a web-basedapplication window, such as a web browser window. In this case,selection interface 810 shows an image 820 having cities 822-828 thatmay be rendered as a result of parameters input into parameter fields832, such as Param 1 and Param 2, of selection interface portion 830.Parameters may be used to query a database. The database may be a memorystoring tables or relational data, such as population, nationality,language, demographic information, political information, militaryinformation, legal jurisdiction, etc., corresponding to geographicalcoordinates. These geographical coordinates may be converted to quadtreeaddresses, which are used to render potential selections in a GISdisplay of a user interface.

In some cases, further user interaction may refine selected regions. Forexample, a city representing a region of the Earth may be selected byclicking one of the highlighted cities 822-828 in view 820. In somecases, selection interface 810 can show different color lines oradditional graphics to guide a user through the selection process. Inother cases, selection interface 810 may provide additional or differentselection radio button and input boxes in portion 830 for developing asearch query. in another embodiment, the selection interface 810 may bea set of preferences that the may be used to automatically selectregions based on parameters or geographical coordinates.

According to a further embodiment, a resolution at which a selectedregion is to he considered may be predetermined or explicitly set usingselection interface portion 830. A default resolution level is a levelat which all imagery, terrain, and vector data are included in theportable globe, whether or not they are in the selected region. Aselected level is a level at which quadtree nodes are used to define thequery region and its interior. A selected level will likely not be ahigher resolution than the maximum level.

According to some embodiments, all portions of the Earth overlapping theselected region at a specified resolution are preserved. In most cases,this may be at a maximum resolution, where all imagery, terrain, andvector data that is in the selected region is included in the portableglobe. For the rest of the master globe, a background or defaultresolution may be set. In most cases, this may be a lower resolution, oreven a minimum resolution. Once one or more selections are made,selection information is received by packet bundler 722, according to anembodiment. In some cases, location information and resolutioninformation are received. In other cases, only location information isreceived and resolution information is determined or inferred byselection module 830 or image display 820.

Packet bundler 722 may receive a request for updated geospatial databased on at least one selected region from a local device capable ofdisplaying a spinning-earth GIS. Packet bundler 722 may generate packetrequests for master globe server 710, according to an embodiment. Eachpacket request may include a request for a packet, having geospatialdata for a specified quadtree. A series of packet requests may begenerated individually. Packet requests may also be generated in abundled format. Packet bundler 722 may generate packet requests for eachlayer of the at least one selected region. For example, all terrainlayer packet requests may be bundled together. in another packet requestbundle, all image layer packet requests may be bundled together. Becausepackets are generated and bundled per layer, layers having no change indata or that arc not required may be omitted from packet requests formaster globe server 710. Updated geospatial data may he received frommaster globe server 710 using the generated request packet bundles.

In an exemplary embodiment, packet bundler 722 may receive packets ofdata from master globe server 710 representing regions of the Earth. inmany cases, packet bundles may be used. Packet bundles may provide ameans of storing a large number of indexed packets in a limited numberof files that have a maximum size (e.g. 2 GB). The packets may be storedin their “network-ready” state, so they can be extracted from the bundleand passed directly to globe cutter 724 which selects on a portion ofthe packet bundles corresponding to the selected query region andresolution. Packet bundler 722 may forward these packet bundles to globecutter 724, which determines if there are changes in the data. In anexemplary embodiment, only packets that contains change or updates arepassed along as a delta update, such as through portable globe 730.Portable globe 730 may include a directory containing one or more packetbundle directories. Data files and the index file of a packet bundle arestored at the same level in a single directory. The index file may beordered by the quadtree path address, and a binary search can be done onit to find the data file id and the offset into the file for any packet.Packet type may be stored in the index, so it is possible to put anentire globe into a single packet bundle. According to a furtherembodiment, packet bundles may be received or cut on a per layer basis.

According to an embodiment, globe cutter 724 may be configured to createa new portable globe based on the updated geospatial data in thereturned packet bundles. The updated geospatial data may be compared toan old portable globe or information related to the request from localdevice 740. Globe cutter 724 may compare the updated geospatial datawith the old portable globe by performing a checksum or a hash sum, suchas a cyclic redundancy check (CRC). Globe cutter 724 may also use anyother operations for detecting a difference in two data collections witha high probability. Redundancies may be excluded from the new portableglobe based on the comparing. As a result, only the differences remainbetween the updated geospatial data and the old portable globe remain.Comparisons may also be made on a per layer basis.

Globe cutter 724 may create a new portable globe based on the updatedgeospatial data and provide the new portable globe to the local devicewith a reference to the old portable globe. Local device 740 can displayan updated portable globe having data files that include greatergeospatial data for the at least one selected region than for theremainder of the portable globe so that the selected regions, nowupdated, can be rendered at a higher resolution than the remainder ofthe portable globe in the spinning-earth GIS on the local device. Globecutter 724 may create new quadtree packets tier the new portable globebased on the updated geospatial data.

According to an embodiment, globe cutter 724 may involve a simplecgi-bin python interface for cutting the globe. JavaScript code in acutter page may send out a sequence of commands via standard AJAXtechniques to build the globe. Example commands sent may include:

  Set up directories in /tmp:  http://my_server/cgi-bin/globe_cutter.py?cmd=ADD_GLOBE_DIRECTORY&globe_name=my_globe  Convert polygon to qt node list:  http://my_server/cgi-bin/globe_cutter.py?cmd=POLYGON_TO_QTNODES&globe_name=my_globe&polygon=<kml>polygondef.</kml>&polygon=_level=18   Rewrite dbroot: http://my_server/cgi-bin/globe_cutter.py?cmd=REWRITE_DB_ROOT&globe_name=my_globe&source=http://localhost   Grab referenced kml:  http://my_server/cgi-bin/globe_cutter.py?cmd=GRAB_KML&globe_name=my_globe   Build globepacket bundles:  http://my_server/cgi-bin/globe_cutter.py?cmd=BUILD_GLOBE&globe_name=my_globe&source=http://localhost&default_level=4&max_   Extract data for search:  http://my_server/cgi-bin/globe_cutter.py?cmd=EXTRACT_SEARCH_DB&globe_name=my_globe&polygon=<kml>polygondef.</kml>   Add files for supporting plugin: http://my_server/cgi-bin/globe_cutter.py?cmd=ADD_PLUGIN_FILES&globe_name=my_globe   Packageglobe into a single file:  http://my_server/cgi-bin/globe_cutter.py?cmd=PACKAGE_GLOBE&globe_name=my_globe   Get sizeinfo about the globe file:  http://my_server/cgi-bin/globe_cutter.py?cmd=GLOBE_INFO&globe_name=my_globe

Globe cutter 724 may create an information file as it builds the globe.This file contains all of the major commands that were executed togenerate the globe and the file is itself included in the globe. Toaccess the file when the globe is being served, usehttp://localhost:8888/earth/info.txt.

Portable globe 730 of exemplary system 700 may be transmitted to a localdevice, such as local device 740 configured to render the portable globe730 in the GIS, according to an embodiment. For example, local globeserver 742 may be used to render a portable globe 730 to other localdevices. Local globe server 742 may be a localhost server, such as aGoogle Earth server on local device 740. Local device 740 may alsorender portable globe 730 using a client, such as a Google Earth clientor a Google Earth viewer. The selected region of the portable globe iscapable of being rendered at a higher resolution than the remainder ofthe portable globe. According to some embodiments, servers may supportboth localhost-only and shared serving so that the globe can be viewedby only the local machine or shared with a small number of users on alocal network.

FIG. 9 is a flowchart illustrating an exemplary method 900 for updatinga portable globe for a geographical information system (GIS), accordingto an embodiment. In step 902, a request for updated geospatial databased on at least one selected region is received from a local device740 Local device 740 may generate packet requests or a request packetbundle for each layer of the selected, region. The request packet bundleis transmitted to the globe cutter server 720. The globe cutter server720 determines if the request packet is available and updated. If therequested packet bundle is either unavailable or not updated, the globecutter server 720 sends the request to master globe server 710. In someembodiments, the request may be sent directly to master globe server710. Data difference checks may he performed by packet bundler 722 or bymaster globe server 730.

In step 904, the globe cutter server 720 obtains updated geospatial datafrom a master globe server using the generated request packet bundles.The packet bundler 722 determines which packets and at what resolutionis required for the update request. In step 906, the new updated packetbundles are used to create a new portable globe 730 based on the updatedgeospatial data by comparing the updated geospatial data with the oldportable globe. Redundant globe data may be excluded from the newportable globe based on the comparing. For example, globe cutter 724 mayremove packet bundles that contain no changes during creation of the newportable globe.

Finally, in step 908, globe cutter 724 provides the new portable globeto the local device with reference to the old portable globe. The localdevice may display an updated portable globe having data files thatinclude greater geospatial data for the at least one selected regionthan for the remainder of the, portable globe so that the updated globecan be rendered at a higher resolution than the remainder of theportable globe in the spinning-earth GIS on local device 740 using localglobe server 742.

Bundling packet requests by layer, or channel, may improve efficiencyfrom 2× to 10×, getting bundles of some specified number of packets foreach request. According to an embodiment, to create a delta globe, globecutter 724 may always have the old portable globe that the delta, or newportable globe, is intended to update. it may only look for updates inthe vicinity of the quadtree nodes that envelop the selected regions'quadtree nodes. This can be made more general by storing the quadtreenode file as well as the selected regions file. To improve deltaefficiency, packet bundler 722 will pre-calculate a cyclic redundancychecksum (CRC) for the packets in each bundle request nom the oldportable globe, which will be appended to the packet request. The masterglobe server of the new master globe that is being cut will thencalculate the CRC as it gathers the packets for the response. if theCRCs match, the server will send a NO_CHANGE flag rather than thepackets. Otherwise, the packets will be sent and the delta cutter willdiff each packet with those from the old portable globe and save thosethat have been altered or did not previously exist into the new portableglobe file (delta or gld). Since deltas will often represent changes inonly a subset of the available layers (channels), this approach shouldgreatly reduce the data transfer between globe cutter server 720 andmaster globe server 710. The new portable globe tile format will beidentical to the old portable globe file format, but it will contain adbroot and quadtree that represents both the packets it contains andthose contained within the old portable globe (base glb).

The combination of storing both the new quadtree and the new packets inthe new portable globe guarantees that unchanged, deleted, altered andnew packets ma be represented in the globe as it is served. The new andaltered packets will be in the new portable globe file. The unchangedpackets will be in the old portable globe tile. Deleted packets mightstill be in the old portable globe file, but they should not berequested because they will not be represented in the quadtree nodes.

FIG. 10 illustrates an exemplary diagram of local device 740 forrendering an updated portable globe on the local device, according to anembodiment. Local device 740 may include local globe server 742 as wellas requester 1010 and globe creator 1012. The requester 1010 may respondto query inputs for a selected geospatial region. Globe creator 1012receives a new portable globe in response to queries submitted byrequester 1010. The globe creator renders an updated portable globe withthe new portable globe and any references to existing, or old, portableglobes.

Updated portable globes may be created in at least two ways: 1)appending the globe file to an existing globe file or 2) merging theportable globes. In an embodiment, globe creator 1012 may append the newportable globe to the old portable globe and update the index of the oldportable globe. The updated globe may be rendered for updated portionsof the old portable globe. These new updated portable globes may betreated the same way as if separate files.

In another embodiment, globe creator 1012 may merge the new portableglobe with the old portable globe. Two or more globes may be chainedtogether, where lower ranked globes are accessed if no data is found inthe higher globe. The highest ranked globe would be the master globe,and it would supply the dbroot and the quadtree packets for the updatedglobe. To get a sense of scale, the portable globe may be 4.7 GB but thequadtree is only 2.1 MB, so rebuilding and copying the quadtree eachtime is not a huge encumbrance. A delta may be performed against anoriginal globe or against a last globe. The former would allowdiscarding of earlier delta globes, which is especially useful if thechanges tend to all be in the same area. The latter might makesubsequent deltas smaller, especially if involving updating differentregions than earlier deltas.

A new portable globe may be fused into an old portable, which will thensupport the same speed of serving as any other portable globe file. Thiscan be done in a single pass with a stream for both the new and oldportable files. This may require enough storage to temporarily store anupdated globe that is about as big as the original old portable globeand the new portable globe combined. It might be slightly smallerbecause deleted packets, redundant files, and the original quadtreewould all be eliminated. Once the fusion is complete, the old and newportable globes may be deleted.

In another example, globe creator 1012 may replace the old portableglobe dbroot file with an updated dbroot file, update the index of theold portable globe and render the updated portable globe using theupdated dbroot file. According to a further embodiment, the dbroot filemay be rewritten. For instance, paths to icons may extracted from thedbRoot. These paths are relative so they are not rewritten, but theicons are gathered from the source server. The paths for Keyhole MarkupLanguage (KML) and search are rewritten with specified server addressesand ports. The command line tools allow these addresses and ports to bespecified independently, in case separate servers other than theportable server will be used to fulfill these functions. The originalkml addresses are saved to a file and can be used as seed addresses forgathering all of the kml and referenced files into the portable globe.

The addresses can be controlled via GET variables such as the following:

-   FORCE_PORTABLE_SERVER—default server address for rewrites (default    is “localhost”).-   FORCE_PORTABLE_PORT—default server, ort for rewrites (default is    “9335”).-   FORCE_PORTABLE_PREFIX—default server prefix for rewrites (“http” or    “https”).-   FORCE_SEARCH_SERVER—search server address (default is the portable    server address).-   FORCE_SEARCH_PORT—search server port (default is the portable server    port).-   FORCE_PORTABLE_SERVER—kml server address (default is the portable    server address).-   FORCE_KML_PORT—kml server port (delimit is the portable server    port).

FIG. 11 is a flowchart illustrating an exemplary method 1100 forrendering an updated portable globe in a GIS, according to anembodiment. In step 1102, requester 1010 requests, from a globe serveror globe cutter, updated geospatial data for at least one selectedregion to update an old portable globe. In an exemplary embodiment, theat least one selected region is cable of being rendered at a higherresolution than the remainder of the old portable globe. The globecreator 1012 receives updated geospatial from, for example, the masterglobe server 710 or indirectly from global cutter server 720. In step1104, globe creator 1012 obtains the new portable globe and referencesto one or more old portable globes. Next, in step 1106, globe creator1012 creates an updated portable globe with the new portable globe andreferenced old portable globe. Finally at step 1108, the updatedportable globe is rendered in a spinning-earth GIS in a display localdevice 740 using local globe server 742.

Once the new portable globe is generated, it may be served in concertwith the corresponding old portable globe in the manner previouslydescribed. In short, the new portable globe may act as the master globefrom which all packets and files will be first requested. If a packet ismissing, the old portable globe will be sought and packets will berequested from it. The old portable globe will be uniquely identifiedand referenced by the new portable globe, most likely by its name andcreation date. If there is more than one new portable globe file, theycan be daisy chained in a similar manner, from most recent to leastrecent until the old portable globe is reached.

According to another embodiment only one packet bundle file may becreated. The data packet bundle would be made up of imagery, terrain,and vector packets rather than separating them into distinct packetbundles as described above. One benefit of this approach is that thedata packet bundle will normally be much larger than all of the otherfiles so it can be used as the beginning of the globe tile to preventhaving to copy all of the data again. The quadtree is kept separatebecause these are written at different times, although it is possible toput in placeholders for them in the index The quadtree packet bundlefile and its index and the miscellaneous files are appended onto thedata packets bundle file and its index. A files index for themiscellaneous tiles, the data packets bundle index, the quadtree packetsbundle file and its index is appended next. The files index is made upof file names, offsets into the globe file, and file sizes. The names ofthe files are controlled by the globe cutter so there are no namespaceissues. The final 8 bytes consists of an offset, so that the tiles indexcan be found, and a CRC for the entire globe file.

This approach is amenable to a delta publishing approach. The deltaglobe file would be identical to a globe file except that it would alsocontain a reference to another globe file or to another delta globe filein the files index. Unifying an old portable globe file and one or morenew portable globe tiles into a single updated globe file would bestraightforward. Such a tool would be useful for not allowing the numberof new portable globe files associated with a file from getting too big,since these may degrade performance because they rely on a fail-overapproach.

A Portable Proxy Server will allow users to access portable globes beingserved on other machines, according to an embodiment. For their clients,namely Google Earth and the 3D Plugin, both the portable and proxyservers will always appear to be on localhost on some specified port.This allows the hard-coding of KML paths and search tabs in the dbroot.If the user does NOT specify a key, then only the local machine canaccess the globe through localhost. If the user specifies a key, then heor she can share it with others having a proxy server on his or hermachine. They start the proxy servers with the portable server's IPaddress and the shared key. The globe can be viewed as if it were beingserved locally on their machine.

The key offers simple but fairly effective security. It is combined witheach proxy server's IP address and passed as a digest. This meansman-in-the-middle attacks are pretty hard. It is always easy to changethe key by restarting the portable server, so it only has to last ashort amount of time. Decoding the key after a globe is no longer usingit, has no purpose assuming people constantly change their keys. As anexample, if a user enters a room of 10 people and wants to share a globewith them but there is only a shared network available, the user maytell everyone a key and start using that key. The other users wouldstart their proxy servers using that key.

Although aspects of the invention can be used for images and datarelated to geographical locations in a GIS, embodiments of the inventionare not limited to geographical locations or buildings. Aspects of theinvention can also be used as a means of storing, transferring andsecuring any file-based data in areas of manufacturing, engineeringdesign, research, medicine, physics, biology, geology, astronomy,architecture, entertainment, sports, or any other field that involvesimaging from various perspectives.

Aspects of the present invention, for exemplary systems 100-400, 700-800or 1000 and/or methods 500-600, 900 or 1100 or any part(s) orfunction(s) thereof may be implemented using hardware, software,firmware, tangible computer readable or computer usable storage mediahaving instructions stored thereon, or a combination thereof and may heimplemented in one or more computer systems or other processing systems.

The present invention has been described above with the aid offunctional building blocks illustrating the implementation of specifiedfunctions and relationships thereof. The boundaries of these functionalbuilding blocks have been arbitrarily defined herein for the convenienceof the description. Alternate boundaries can be defined so long as the,specified functions and relationships thereof are appropriatelyperformed.

The foregoing description of the specific embodiments will so fullyreveal the general nature of the invention that others can, by applyingknowledge within the skill of the art, readily modify and/or adapt forvarious applications such specific embodiments, without undueexperimentation, without departing from the general concept of thepresent invention. Therefore, such adaptations and modifications areintended to be within the meaning and range of equivalents of thedisclosed embodiments, based on the teaching and guidance presentedherein. It is to be understood that the phraseology or terminologyherein is for the purpose of description and not of limitation, suchthat the terminology or phraseology of the present specification is tobe interpreted by the skilled artisan in light of the teachings andguidance.

The breadth and scope of the present invention should not be limited byany of the above-described exemplary embodiments, but should be definedonly accordance with the following claims and their equivalents.

What is claimed is:
 1. A method tor providing a portable globe for ageographical information system (GIS), comprising: receiving at leastone selected region corresponding to a geographical region of a masterglobe; organizing geospatial data from the master globe based on the atleast one selected region; creating the portable globe based on theorganized geospatial data, wherein the portable globe is smaller in datasize than the master globe and comprises data files that includegeospatial data having a higher resolution for the at least one selectedregion than for the remainder of the portable globe; and transmittingthe portable globe to a local device configured to render the portableglobe in the GIS, wherein the at least one selected region is capable ofbeing rendered at a higher resolution than the remainder of the portableglobe.
 2. The method of claim 1, wherein the organizing geospatial dataincludes retrieving master globe tiles and data for the selected regionhaving a higher resolution than master global tiles and data retrievedfor regions outside the at least one selected region in order for theportable globe to be rendered at a higher resolution for the at leastone selected region.
 3. The method of claim 1, wherein the organizinggeospatial data further includes retrieving master globe tiles and dataat a higher resolution for imagery, terrain and vector data.
 4. Themethod of claim 1, wherein the organizing geospatial data includessetting a first resolution for the at least one selected region and asecond resolution for the rest of the master globe.
 5. The method ofclaim 1, wherein the receiving includes receiving at least one selectedasset type and the organizing geospatial data includes organizinggeospatial data from the master globe based on the at least one selectedasset type.
 6. The method of claim 1, wherein the organizing geospatialdata includes retrieving searchable data from the master globe for theat least one selected region.
 7. The method of claim 1, wherein thereceiving includes querying a database for one or more geographicalcoordinates based on query information; converting the one or moregeographical coordinates to quadtree addresses; and determining the atleast one selected region based on the quadtree addresses.
 8. The methodof claim 1, further comprising identifying high resolution quadtreenodes based on the at least one selected region.
 9. The method of claim8, further comprising identifying all lower resolution quadtree nodesthat encompass the high resolution quadtree nodes.
 10. A method forupdating a portable. globe for a geographical information system (GIS),comprising: receiving a request for updated geospatial data based on atleast one selected region from a local device capable of displaying aGIS; generating a plurality of packet requests for each layer of the atleast one selected region; obtaining updated geospatial data from amaster globe server using the generated plurality of packet requests;creating a new portable globe based on the updated geospatial data bycomparing the updated geospatial data with an old portable globe,wherein the new portable globe is created without redundant globe data;and providing the new portable globe to the local device with areference to the old portable globe, whereby the local device candisplay an updated portable globe having data files that includegeospatial data having a higher resolution for the at least one selectedregion than for the remainder of the portable globe so that the at leastone selected region can be rendered at a higher resolution than theremainder of the portable lobe in the GIS on the local device.
 11. Themethod of claim 10, wherein the receiving includes receiving the requestbased on a change in the selected region of interest.
 12. The method ofclaim 10, wherein the creating a portable globe based on the organizedgeospatial data includes creating new quadtree packets for the portableglobe.
 13. The method of claim 10, wherein the generating a plurality ofpacket requests includes generating the plurality of packet requests ina bundled format for each layer.
 14. A system for providing a portableglobe for a geographical information system comprising; a selectionmodule configured to query a database for one or more geographicalcoordinates based on query information; convert the one or moregeographical coordinates to quadtree addresses; and determine at leastone selected region corresponding to a geographical region of a masterglobe based on the quadtree addresses; and a fusion module configuredto: organize geospatial data from the master globe based on the at leastone selected region; and create a portable globe based on the organizedspatial data, wherein the portable globe comprises data files thatinclude geospatial data having a higher resolution for the at least oneselected region than for the remainder of the portable globe; and atransmitter configured to transmit the portable globe to a local deviceconfigured to render the portable globe in the GIS, wherein the at leastone selected region of the portable globe is capable of being renderedat a higher resolution than the remainder of the portable globe.
 15. Thesystem of claim 14, wherein the fusion module is further configured toretrieve master globe tiles and data for the at least one selectedregion having a higher resolution than master global tiles and dataretrieved for regions outside the at least one selected region in orderfor the portable globe to be rendered at a higher resolution for the atleast one selected region.
 16. A system for updating a portable globefor a geographical information system (GIS), comprising: a packetbundler configured to receive a request for updated geospatial databased on at least one selected region from a local device capable ofdisplaying a GIS; generate a plurality of packet requests for each layerof the at least one selected region; and obtain updated geospatial datafrom a master globe server using the generated plurality of packetrequests; and a globe cutter configured to create a new portable globebased on the updated geospatial data by comparing the updated geospatialdata with an old portable globe, wherein the new portable globe iscreated without redundant globe data; and provide the new portable globeto the local device with a reference to the old portable globe, wherebythe local device: can display an updated portable globe having datafiles that include geospatial data having a higher resolution for the atleast one selected region than for the remainder of the portable globeso that the at least one selected region can be rendered at a higherresolution than the remainder of the portable globe in the GIS on thelocal device.
 17. The system of claim 16, wherein the packet bundler isfurther configured to receive the request based on a change in theselected region of interest.
 18. The system of claim 16, wherein theglobe cutter is further configured to create new quadtree packets forthe new portable globe based on the updated geospatial data.
 19. Thesystem of claim 16, wherein the globe cutter is further configured tocompare the new portable globe with the old portable globe by performinga check sum or a hash sum.
 20. The system of claim 16, wherein the globecutter is further configured to generate the plurality of packetrequests in a bundled format for each layer.